package cn.marinda.resturants.service;

import cn.marinda.resturants.entity.User;
import cn.marinda.resturants.global.Pages;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/** 用户服务层
 *
 * @date 2021/11/28
 * @author Marinda
 *
 */
public interface UserService  extends IService<User> {

    /** 修改用户
     *
     * @param user  用户
     * @return 修改结果
     */
    boolean update(User user);

    /** 添加用户
     *
     * @param user 用户
     * @return 是否成功
     */
    boolean addUser(User user);

    /** 删除用户
     *
     * @param uid 用户
     * @return 是否成功
     */

    boolean deleteUser(String uid);

    /** 查询所有用户信息
     *
     * @return 用户信息列表
     */
    List<User> queryList();

    /** 通过uid来查询一个用户
     *
     *
     * @param uid 用户uid
     * @return 用户
     */
    User selectUserUid(String uid);


    /** 模糊查询名字存在name的用户
     *
     * @date 2021/11/28
     * @param name 名
     * @return 用户
     */
    User selectLikeName(String name);

    /** 返回一个指定日期的登录时间的所有用户
     *
     * @param startDate startDate
     * @param endDate
     * @return
     */
    List<User> selectLoginDate(String startDate,String endDate);


    /** 返回一个指定日期的注册时间的所有用户
     *
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 用户的集合
     */
    List<User> selectRegisterDate(String startDate,String endDate);


    /** 在手机号唯一性给一个用户绑定的情况下
     *
     * @param phone
     * @return 用户
     */
    User selectPhone(String phone);

    /** 查询属于某一会员的用户列表
     *
     * @param uid 用户uid
     * @return 用户集合
     */
    List<User> selectMember(int uid);


    /** 分页User
     *
     * @param page 传输page数据
     * @return 迭代的page
     */
    IPage<User> selectPageList(Pages page);
}
